prompt 获取病情编码和单病种编码 create or replace function SF_ZY_BQBM00_DBZBM0 ( PBRID00 in number, --BRID00 PZYID00 in number, --ZYID00 PFHLX00 in char , --返回类型 0:bqbm00 1:dbzbm0 3:精准扶贫根据诊断返回 PQTBZXZ in char , --前台选择病种标志 0:未选择 1:特殊病种或诊断(bm_tsbzb0) ,2:单病种选择(BM_DBZDEB) PBQBM00 in char , --病情编码 PDBZBM0 in char --单病种编码 ) return varchar2 is LS_FHXX00 varchar2(100); --返回信息 LS_CYZYZD varchar2(100); --出院主要诊断 LS_YBZDBH XT_ICD900.YBZDBH%type; --XT_ICD900.YBZDBH LS_YBBZBM BM_TSBZB0.YBBZBM%type; --BM_TSBZB0.YBBZBM LS_YBZXLB IC_YBBRLB.YBZXLB%type; LS_YBBRLB BM_BRXXB0.YBBRLB%type; LS_FBBH00 BM_BRXXB0.FBBH00%type; LS_SFXNH0 IC_YBBRLB.SFXNH0%type; LS_SFCYZD varchar2(100); --是否发送出院诊断 Y:是 N:否 ZY_DBZJSBQBMFS varchar2(100); --住院单病种结算bqbm00是否按单病种编码发送 Y:bqbm00=dbzbm0(单病种编码不为空时按单病种编码发送) N:bqbm00=出院主要诊断 默认值:Y LS_COUNT0 number(12); LS_FPBZBH XT_ICD900.FPBZBH%type;--扶贫对应病种编码 LS_FPBZMC XT_ICD900.FPBZMC%type;--扶贫对应病种名称 LS_DKTSBRTS XT_XTCS00.VALUE0%TYPE; LS_SYSSLB ZY_BRXXB0.SYSSLB%type; LS_DBZBM0 ZY_BRXXB0.DBZBM0%type; --单病种编码 LS_DBZMC0 ZY_BRXXB0.DBZMC0%type; --单病种名称 LS_BZBMLB ZY_BRXXB0.BZBMLB%type; --病种编码类别 0:单病种编码 1:精准扶贫编码 2:出院诊断 LS_SFJZFP ZY_BRXXB0.SFJZFP%type; --是否精准扶贫,Y:是;N:不是 LS_QYSYJSJSXYBJK varchar2(10); -- MODIFICATION HISTORY --Person Date Comment --zhangyc 2017.08.08 create by ZYSF-20170724-002 (SF_ZY_YBZDBM,SF_SF_YBBZBM整合到这里一起处理) --zhangyc 2019.05.15 指定精准扶贫病人,按照FPBZBH发送病情编码 ZYSF-20190218-002 -- dsm 2019.07.12 增加ZY_QYSYJSJSXYBJK=1时,如果是生育病人返回SYSSLB for ZYSF-20190710-002 --zhangyc 2019.08.08 精准扶贫接口改造 by ZYSF-20190808-005 --zhangyc 2019.08.09 修正根据诊断取单病种编码以及PFHLX00=3:精准扶贫根据诊断返回 by ZYSF-20190809-003 --zhangyc 2023.05.15 修正精准扶贫病人,发送出院某个诊断 begin LS_COUNT0:=0; if PZYID00=0 then select B.YBZXLB,A.YBBRLB,A.FBBH00,B.SFXNH0 into LS_YBZXLB,LS_YBBRLB,LS_FBBH00,LS_SFXNH0 from BM_BRXXB0 A,IC_YBBRLB B where A.BRID00=PBRID00 and A.YBLB00=B.YBLB00 and A.FBBH00=B.FBBH00; else select B.YBZXLB,A.YBBRLB,A.FBBH00,B.SFXNH0,C.SYSSLB,C.DBZBM0,C.DBZMC0,C.BZBMLB,C.SFJZFP into LS_YBZXLB,LS_YBBRLB,LS_FBBH00,LS_SFXNH0,LS_SYSSLB,LS_DBZBM0,LS_DBZMC0,LS_BZBMLB,LS_SFJZFP from BM_BRXXB0 A,IC_YBBRLB B,ZY_BRXXB0 C where A.BRID00=C.BRID00 and A.YBLB00=B.YBLB00 and A.FBBH00=B.FBBH00 and C.ZYID00=PZYID00; end if; begin select upper(trim(value0)) into ZY_DBZJSBQBMFS from XT_XTCS00 where name00='ZY_DBZJSBQBMFS'; exception when others then ZY_DBZJSBQBMFS:='N'; end; --ZY_CYJSBQZDFS:住院收费医保病人结算[zyfs]request中bqbm00是否发送出院主要诊断 0:都不发送 1:都发送 2:医保发送(农合除外) 3:农合发送(医保除外) 4:省医保发送 5:市医保发送 默认值:0都不发送 begin select trim(SF_SF_XTCS00(PBRID00,'ZY_CYJSBQZDFS')) into LS_SFCYZD from dual; exception when others then LS_SFCYZD:='Y'; end; --获取出院主要诊断 begin select trim(ZDM000) into LS_CYZYZD from BQ_BRZDXX where BRID00=PBRID00 and ZYID00=PZYID00 and ZDLB00='3' and rownum=1; exception when others then LS_CYZYZD:=''; end; --读卡时特殊病人提示,Y配置格式(YY提示内容;第1位Y表示要提示,并且提示的内容是第3位开始的串,第2位Y表示提示内容是BM_MZJZBR.MZLY00)提示,N不提示,默认N begin select substr(trim(VALUE0),1,1) into LS_DKTSBRTS from XT_XTCS00 where name00='YS_DKTSBRTS'; exception when others then LS_DKTSBRTS:='N'; end; begin select count(1) into LS_COUNT0 from ZY_BRXXB0 A,BM_MZJZBR C,BM_BRXXB0 B where MZLY00 in('建档立卡贫困人口','省定扶贫标准下的低保') and A.BRID00=B.BRID00 and B.BRZJBH=C.BRSFZH AND A.ZYID00=PZYID00; exception when others then LS_COUNT0:=0; end; if PFHLX00 in ('3') then --3:精准扶贫根据诊断返回--begin-- --LS_BZBMLB:病种编码类别 0:单病种编码 1:精准扶贫编码 2:出院诊断 --如果是精准扶贫编码,有登记单病种-->直接返回登记的病种 if (LS_BZBMLB in ('1') or LS_SFJZFP in ('Y','1')) and LS_DBZBM0 is not null then LS_FHXX00:=LS_DBZBM0; end if; --如果是精准扶贫编码,未登记单病种,前台未传入并且编码-->根据诊断取病种字典维护 if (LS_BZBMLB in ('1') or LS_SFJZFP in ('Y','1')) and LS_DBZBM0 is null and PBQBM00 is null then begin select max(b.DBZBM0) into LS_DBZBM0 from BM_DBZZDB a,BM_DBZDEB B where a.BQBMID=b.BQBMID and BZBMLB in ('1') and a.ZDBM00 in (select ZDM000 from BQ_BRZDXX where BRID00=PBRID00 and ZYID00=PZYID00); exception when others then LS_DBZBM0:=''; end; LS_FHXX00:=LS_DBZBM0; end if; --3:精准扶贫根据诊断返回--end-- elsif PFHLX00 in ('0') then --返回类型 0:bqbm00 1:dbzbm0 --0:返回类型 0:bqbm00--begin-- if PQTBZXZ in ('1') then --前台选择病种标志 0:未选择 1:特殊病种或诊断(bm_tsbzb0) ,2:单病种选择(BM_DBZDEB) LS_FHXX00:=trim(PBQBM00); --病情编码 elsif PQTBZXZ in ('2') then LS_FHXX00:=trim(PDBZBM0);--单病种编码 else LS_FHXX00:=''; end if; if PQTBZXZ in ('1') and (LS_FHXX00 is not null) then --前台选择病种标志 0:未选择 1:特殊病种或诊断(bm_tsbzb0) ,2:单病种选择(BM_DBZDEB) begin select trim(YBBZBM) into LS_YBBZBM from BM_TSBZB0 where trim(BH0000)=LS_FHXX00 and YBZXLB=LS_YBZXLB and rownum=1; exception when others then LS_YBBZBM:=''; end; if LS_YBBZBM is not null then LS_FHXX00:=LS_YBBZBM; end if; end if; --ZYSF-20190710-002 begin select nvl(max(trim(VALUE0)),'0') into LS_QYSYJSJSXYBJK from XT_XTCS00 WHERE NAME00='ZY_QYSYJSJSXYBJK'; IF (LS_QYSYJSJSXYBJK='1') and (length(LS_SYSSLB)>5) then LS_FHXX00:=LS_SYSSLB; end if; --ZYSF-20190710-002 end --add by ZYSF-20190218-002--begin-- if LS_DKTSBRTS='Y' and LS_COUNT0>0 and (LS_FHXX00 is null ) then begin select FPBZBH into LS_FPBZBH from XT_ICD900 where trim(ICD900)=trim(LS_CYZYZD); exception when others then LS_FPBZBH:=PBQBM00; end; if LS_FPBZBH is not null then LS_FHXX00:=LS_FPBZBH; end if; end if; --add by ZYSF-20190218-002--end-- if (LS_SFCYZD='Y') and (LS_FHXX00 is null) then LS_FHXX00:=trim(LS_CYZYZD); end if; --新农合 获取XT_ICD900.YBZDBH if (LS_SFXNH0='1') and (LS_FHXX00 is not null) then begin select trim(YBZDBH) into LS_YBZDBH from XT_ICD900 where trim(ICD900)=trim(LS_FHXX00); exception when others then LS_YBZDBH:=''; end; if LS_YBZDBH is not null then LS_FHXX00:=LS_YBZDBH; end if; end if; --0:返回类型 0:bqbm00--end-- else --返回类型 0:bqbm00 1:dbzbm0 LS_FHXX00:=PDBZBM0; end if; --LS_BZBMLB:病种编码类别 0:单病种编码 1:精准扶贫编码 2:出院诊断 --如果是精准扶贫编码,有登记单病种-->直接返回登记的病种 if (LS_BZBMLB in ('1') or LS_SFJZFP in ('Y','1')) and LS_DBZBM0 is not null then LS_FHXX00:=LS_DBZBM0; end if; --如果是精准扶贫编码,未登记单病种,前台未传入并且编码-->根据诊断取病种字典维护 if (LS_BZBMLB in ('1') or LS_SFJZFP in ('Y','1')) and LS_DBZBM0 is null and PBQBM00 is null then if LS_SFCYZD='Y' then --2023.05.15 begin select max(b.DBZBM0) into LS_DBZBM0 from BM_DBZZDB a,BM_DBZDEB B where a.BQBMID=b.BQBMID and BZBMLB in ('1') and a.ZDBM00 in (select ZDM000 from BQ_BRZDXX where BRID00=PBRID00 and ZYID00=PZYID00); exception when others then LS_DBZBM0:=''; end; end if; if LS_DBZBM0 is not null then LS_FHXX00:=LS_DBZBM0; end if; end if; return trim(LS_FHXX00); end; / --%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%